/*********************************************************************************
 *      Copyright:  (C) 2025 LingYun<iot25@lingyun>
 *                  All rights reserved.
 *
 *       Filename:  fork.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(09/03/25)
 *         Author:  LingYun <iot25@lingyun>
 *      ChangeLog:  1, Release initial version on "09/03/25 16:41:12"
 *                 
 ********************************************************************************/
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<unistd.h>
#include<errno.h>
int main(int argc, char *argv[])
{
	pid_t        pid;// 定义一个pid_t类型的变量pid，用于存储fork函数的返回值
	printf(" Parent process PID[%d] start running...\n",getpid());// 输出父进程的PID，getpid()获取当前进程的PID

	pid = fork(); // 调用fork函数创建子进程，fork返回值存储在pid中
	if(pid<0) // 如果fork返回值小于0，表示创建子进程失败
	{
		printf(" fork() create child process failure: %s\n",strerror(errno)); // 输出错误信息，strerror(errno)将错误号转换为错误描述字符串
		return -1;
	}
	else if( pid==0)
	{
		printf("Child process PID[%d] start running,my parent PID is [%d]\n",getpid(),getppid());  // 输出子进程的PID和父进程的PID，getppid()获取父进程的PI
		return 0;
	}
	else if( pid>0 )// 如果fork返回值大于0，表示当前代码在父进程中执行，且pid为子进程的PID
	{
		printf("Parent process PID[%d] continue running ,and child process PID is [%d]\n",getpid(),pid);// 输出父进程的PID和子进程的PID
        return 0;	// 父进程正常退出
	}
		return 0;
	
	
 	
}


